Wybrany obszar badania PISA 2018

Badanie PISA (Programme for International Student Assessment) jest największym na świecie badaniem umiejętności uczniów, realizowanym co trzy lata we wszystkich państwach członkowskich OECD (Organisation for Economic Co-operation and Development) oraz kilkudziesięciu krajach partnerskich.

W ramach pracy domowej zdecydowałam się przeanalizować dane z badania PISA 2018 dotyczące absencji i spóźnień uczniów (ang. Student truancy and lateness) z 48 krajów europejskich.

Analiza wyników

Jaki procent uczniów opuszcza zajęcia szkolne lub się na nie spóźnia?

Opuszczanie całego dnia zajęć

Poniższy interaktywny wykres mapowy przedstawia procent uczniów z danego kraju, którzy w czasie 2 tygodni poprzedzających badanie PISA: ani razu, 1-2 razy, 3-4 razy lub 5 i więcej razy opuścili cały dzień szkolnych zajęć.

knitr::opts_chunk$set(echo = TRUE)

df <- read_excel("late.xlsx")

df %>% mutate(Code = countrycode(Country, "country.name", "iso3c")) -> df

europe_df <- subset(df, Country %in% c("Albania", "Andorra", "Armenia", "Austria",
                                       "Belarus", "Belgium", "Bosnia and Herzegovina", "Bulgaria",
                                       "Croatia", "Cyprus", "Czechia","Denmark","Estonia","Finland", 
                                       "France","Georgia", "Germany", "Greece","Hungary","Iceland", 
                                       "Ireland", "Italy", "Kosovo", "Latvia","Liechtenstein", 
                                       "Lithuania", "Luxembourg","Malta","Moldova","Monaco","Montenegro",
                                       "Macedonia", "Netherlands","Norway","Poland","Portugal","Romania",
                                       "San Marino","Serbia","Slovakia","Slovenia","Spain",
                                       "Sweden","Switzerland","Turkey","Ukraine","UK","Vatican"))

slider_columns <- c("Never", "Once_twice", "Three_four", "Five_more")
slider_desc <- c("Ani razu", "1-2 razy", "3-4 razy", "5 lub więcej")

aval <- list()
for(step in 1:4){
  aval[[step]] <-list(visible = FALSE,
                      name = paste0(''),
                      z = europe_df[[slider_columns[[step]]]],
                      locations = europe_df$Code,
                      color = europe_df[[slider_columns[[step]]]])
}


aval[1][[1]]$visible = TRUE



df2 <- read_excel("whole_day.xlsx")
df2 %>% mutate(Code = countrycode(Country, "country.name", "iso3c")) -> df

europe_df2 <- subset(df2, Country %in% c("Albania", "Andorra", "Armenia", "Austria",
                                       "Belarus", "Belgium", "Bosnia and Herzegovina", "Bulgaria",
                                       "Croatia", "Cyprus", "Czechia","Denmark","Estonia","Finland", 
                                       "France","Georgia", "Germany", "Greece","Hungary","Iceland", 
                                       "Ireland", "Italy", "Kosovo", "Latvia","Liechtenstein", 
                                       "Lithuania", "Luxembourg","Malta","Moldova","Monaco","Montenegro",
                                       "Macedonia", "Netherlands","Norway","Poland","Portugal","Romania",
                                       "San Marino","Serbia","Slovakia","Slovenia","Spain",
                                       "Sweden","Switzerland","Turkey","Ukraine","UK","Vatican"))

# create steps and plot all traces
steps <- list()
fig2 <- plot_geo(locations = europe_df2$Code)
for (i in 1:4) {
  fig2 <- add_trace(
    fig2,
    z = aval[i][[1]]$z,
    locations = aval[i][[1]]$locations,
    color = aval[i][[1]]$color,
    visible = aval[i][[1]]$visible,
    name = aval[i][[1]]$name
  ) 
  
  step <- list(args = list('visible', rep(FALSE, length(aval))),
               method = 'restyle',
               label=slider_desc[[i]])
  step$args[[2]][i] = TRUE  
  steps[[i]] = step 
}  


fig2 <- fig2 %>%
  layout(sliders = list(list(active = 1,
                             currentvalue = list(prefix = "Ile razy w ciągu ostatnich 2 tygodni opuściłeś/aś cały dzień szkoły? Odp.: "),
                             steps = steps)),
         geo = list(lonaxis = list(range = c(-20, 40)),
                    lataxis = list(range = c(35, 80))
         ))

fig2

Opuszczanie pojedynczych zajęć

Następny wykres przedstawia procent uczniów z danego kraju, którzy w czasie 2 tygodni poprzedzających badanie PISA: ani razu, 1-2 razy, 3-4 razy lub 5 i więcej razy opuścili pojedyncze szkolne zajęcia.

knitr::opts_chunk$set(echo = TRUE)

df <- read_excel("late.xlsx")

df %>% mutate(Code = countrycode(Country, "country.name", "iso3c")) -> df

europe_df <- subset(df, Country %in% c("Albania", "Andorra", "Armenia", "Austria",
                                       "Belarus", "Belgium", "Bosnia and Herzegovina", "Bulgaria",
                                       "Croatia", "Cyprus", "Czechia","Denmark","Estonia","Finland", 
                                       "France","Georgia", "Germany", "Greece","Hungary","Iceland", 
                                       "Ireland", "Italy", "Kosovo", "Latvia","Liechtenstein", 
                                       "Lithuania", "Luxembourg","Malta","Moldova","Monaco","Montenegro",
                                       "Macedonia", "Netherlands","Norway","Poland","Portugal","Romania",
                                       "San Marino","Serbia","Slovakia","Slovenia","Spain",
                                       "Sweden","Switzerland","Turkey","Ukraine","UK","Vatican"))

slider_columns <- c("Never", "Once_twice", "Three_four", "Five_more")
slider_desc <- c("Ani razu", "1-2 razy", "3-4 razy", "5 lub więcej")

aval <- list()
for(step in 1:4){
  aval[[step]] <-list(visible = FALSE,
                      name = paste0(''),
                      z = europe_df[[slider_columns[[step]]]],
                      locations = europe_df$Code,
                      color = europe_df[[slider_columns[[step]]]])
}


aval[1][[1]]$visible = TRUE


df3 <- read_excel("some_classes.xlsx")
df3 %>% mutate(Code = countrycode(Country, "country.name", "iso3c")) -> df

europe_df3 <- subset(df3, Country %in% c("Albania", "Andorra", "Armenia", "Austria",
                                         "Belarus", "Belgium", "Bosnia and Herzegovina", "Bulgaria",
                                         "Croatia", "Cyprus", "Czechia","Denmark","Estonia","Finland", 
                                         "France","Georgia", "Germany", "Greece","Hungary","Iceland", 
                                         "Ireland", "Italy", "Kosovo", "Latvia","Liechtenstein", 
                                         "Lithuania", "Luxembourg","Malta","Moldova","Monaco","Montenegro",
                                         "Macedonia", "Netherlands","Norway","Poland","Portugal","Romania",
                                         "San Marino","Serbia","Slovakia","Slovenia","Spain",
                                         "Sweden","Switzerland","Turkey","Ukraine","UK","Vatican"))

# create steps and plot all traces
steps <- list()
fig3 <- plot_geo(locations = europe_df3$Code)
for (i in 1:4) {
  fig3 <- add_trace(
    fig3,
    z = aval[i][[1]]$z,
    locations = aval[i][[1]]$locations,
    color = aval[i][[1]]$color,
    visible = aval[i][[1]]$visible,
    name = aval[i][[1]]$name
  ) 
  
  step <- list(args = list('visible', rep(FALSE, length(aval))),
               method = 'restyle',
               label=slider_desc[[i]])
  step$args[[2]][i] = TRUE  
  steps[[i]] = step 
}  


fig3 <- fig3 %>%
  layout(sliders = list(list(active = 1,
                             currentvalue = list(prefix = "Ile razy w ciągu ostatnich 2 tygodni opuściłeś/aś jakieś zajęcia szkolne? Odp.: "),
                             steps = steps)),
         geo = list(lonaxis = list(range = c(-20, 40)),
                    lataxis = list(range = c(35, 80))
         ))

fig3

Spóźnianie się na zajęcia

Ostatni wykres w tej części przedstawia procent uczniów z danego kraju, którzy w czasie 2 tygodni poprzedzających badanie PISA: ani razu, 1-2 razy, 3-4 razy lub 5 i więcej razy spóźnili się na zajęcia.

knitr::opts_chunk$set(echo = TRUE)

df <- read_excel("late.xlsx")

df %>% mutate(Code = countrycode(Country, "country.name", "iso3c")) -> df

europe_df <- subset(df, Country %in% c("Albania", "Andorra", "Armenia", "Austria",
                                       "Belarus", "Belgium", "Bosnia and Herzegovina", "Bulgaria",
                                       "Croatia", "Cyprus", "Czechia","Denmark","Estonia","Finland", 
                                       "France","Georgia", "Germany", "Greece","Hungary","Iceland", 
                                       "Ireland", "Italy", "Kosovo", "Latvia","Liechtenstein", 
                                       "Lithuania", "Luxembourg","Malta","Moldova","Monaco","Montenegro",
                                       "Macedonia", "Netherlands","Norway","Poland","Portugal","Romania",
                                       "San Marino","Serbia","Slovakia","Slovenia","Spain",
                                       "Sweden","Switzerland","Turkey","Ukraine","UK","Vatican"))

slider_columns <- c("Never", "Once_twice", "Three_four", "Five_more")
slider_desc <- c("Ani razu", "1-2 razy", "3-4 razy", "5 lub więcej")

aval <- list()
for(step in 1:4){
  aval[[step]] <-list(visible = FALSE,
                      name = paste0(''),
                      z = europe_df[[slider_columns[[step]]]],
                      locations = europe_df$Code,
                      color = europe_df[[slider_columns[[step]]]])
}


aval[1][[1]]$visible = TRUE

# create steps and plot all traces
steps <- list()
fig <- plot_geo(locations = europe_df$Code)
for (i in 1:4) {
  fig <- add_trace(
    fig,
    z = aval[i][[1]]$z,
    locations = aval[i][[1]]$locations,
    color = aval[i][[1]]$color,
    visible = aval[i][[1]]$visible,
    name = aval[i][[1]]$name
  ) 
  
  step <- list(args = list('visible', rep(FALSE, length(aval))),
               method = 'restyle',
               label=slider_desc[[i]])
  step$args[[2]][i] = TRUE  
  steps[[i]] = step 
}  


fig <- fig %>%
  layout(sliders = list(list(active = 1,
                             currentvalue = list(prefix = "Ile razy w ciągu ostatnich 2 tygodni spóźniłeś/aś się na zajęcia szkolne? Odp.: "),
                             steps = steps)),
         geo = list(lonaxis = list(range = c(-20, 40)),
                    lataxis = list(range = c(35, 80))
         ))

fig

Źródła danych

https://gpseducation.oecd.org/